package com.jilujia.domain.hotel.service;

import java.util.List;

import org.springframework.data.domain.Page;

import com.jilujia.domain.hotel.Hotel;
import com.jilujia.domain.region.Region;

public interface HotelService {

	List<Hotel> findUserFollowedHotelsByUserId(Long userId);

	Page<Hotel> findHotelsByCriteria(final HotelSearchCriteria criteria);

	List<Hotel> findTop10Hotels();

	/**
	 * Find hotels by their identifier.
	 * 
	 * @param id
	 *            the hotel id
	 * @return the hotel
	 */
	Hotel findHotelById(Long id);

	Integer getViewCount(Long id);

	Hotel createHotel();

	Hotel saveHotel(Hotel hotel);

	void refleshHotelViewCount();

	void followHotel(Long userId, Long hotelId);

	void unfollowHotel(Long userId, Long hotelId);

	List<Hotel> findTop10HotelsByRegion(Region region);
}
